package org.acm.seguin.uml.jpg;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.acm.seguin.uml.UMLPackage;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* Description of the Class
*
*@author Chris Seguin
*/
public class Save {
private String filename;
private UMLPackage diagram;
/**
* Constructor for the Save object
*
*@param init Description of Parameter
*@param packageDiagram Description of Parameter
*/
public Save(String init, UMLPackage packageDiagram) {
filename = init;
diagram = packageDiagram;
}
/**
* Main processing method for the Save object
*/
public void run() {
try {
Dimension dim = diagram.getPreferredSize();
BufferedImage doubleBuffer = new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_RGB);
Graphics g = doubleBuffer.getGraphics();
g.setColor(Color.gray);
g.fillRect(0,0,dim.width,dim.height);
diagram.print(g, 0, 0);
OutputStream out = new BufferedOutputStream(new FileOutputStream(filename));
JPEGEncodeParam param = JPEGCodec.getDefaultJPEGEncodeParam(doubleBuffer);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out, param);
encoder.encode(doubleBuffer);
out.flush();
out.close();
}
catch (IOException ioe) {
ioe.printStackTrace();
}
}
}